/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Partie.java
 *
 * Created on 23 sept. 2011, 07:54:38
 */
package vue;

import java.awt.BorderLayout;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JOptionPane;
import model.gestion_jeu.Partie;
import model.util.Couleur;

/**
 *
 * @author NABIL
 */
public class PartieVue extends javax.swing.JPanel implements Observer{
    /** Creates new form Partie */
    DamierVue damier;
    JoueurVue noir;
    JoueurVue blanc;
    public PartieVue(String jblanc, String jnoir, Partie p) {
        initComponents();
        this.damier = new DamierVue(p.getDamier());
        this.setLayout(new BorderLayout());
        blanc = new JoueurVue("blanc",p.getJoueurBlanc());
        noir = new JoueurVue("noir",p.getJoueurNoir());
        this.add(blanc,BorderLayout.NORTH);
        this.add(damier,BorderLayout.CENTER);
        this.add(noir,BorderLayout.SOUTH);
        p.addObserver(this);
    }

    public void setTour(Couleur couleur)
    {
        this.blanc.setTour(false);
        this.noir.setTour(false);String nom;
        if(couleur==Couleur.BLANC)
        {
            this.blanc.setTour(true);
            nom = blanc.getNom();
        }
        else
        {
             this.noir.setTour(true);
             nom = blanc.getNom();
        }
            
        
    }
    public String getNomJoueurTour()
        {
            if(blanc.isTour())
                return blanc.getNom();
            else
                return noir.getNom();
        }
    public DamierVue getDamier()
    {
        return damier;
    }
   
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        joueur2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        joueur1 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(vue.DamierApp.class).getContext().getResourceMap(PartieVue.class);
        joueur2.setBackground(resourceMap.getColor("joueur2.background")); // NOI18N
        joueur2.setName("joueur2"); // NOI18N

        jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        jPanel2.setName("jPanel2"); // NOI18N

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 59, Short.MAX_VALUE)
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 36, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout joueur2Layout = new javax.swing.GroupLayout(joueur2);
        joueur2.setLayout(joueur2Layout);
        joueur2Layout.setHorizontalGroup(
            joueur2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(joueur2Layout.createSequentialGroup()
                .addGap(144, 144, 144)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(109, Short.MAX_VALUE))
        );
        joueur2Layout.setVerticalGroup(
            joueur2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 36, Short.MAX_VALUE)
            .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        joueur1.setBackground(resourceMap.getColor("joueur1.background")); // NOI18N
        joueur1.setName("joueur1"); // NOI18N

        jLabel2.setFont(resourceMap.getFont("jLabel2.font")); // NOI18N
        jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
        jLabel2.setName("jLabel2"); // NOI18N

        javax.swing.GroupLayout joueur1Layout = new javax.swing.GroupLayout(joueur1);
        joueur1.setLayout(joueur1Layout);
        joueur1Layout.setHorizontalGroup(
            joueur1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(joueur1Layout.createSequentialGroup()
                .addGap(149, 149, 149)
                .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(189, Short.MAX_VALUE))
        );
        joueur1Layout.setVerticalGroup(
            joueur1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 34, Short.MAX_VALUE)
        );

        setName("Form"); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 281, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel joueur1;
    private javax.swing.JPanel joueur2;
    // End of variables declaration//GEN-END:variables

    public void update(Observable o, Object arg) {
        try
        {
            
            Partie p = (Partie)o;
            if(p.isFinie())
             {
                 String n =p.getVainqueur().getNom();
                 int i = JOptionPane.showConfirmDialog(this, "<html><b>"+n+"</b> a gagné la partie! Voulez vous rejouer?</html>",
                         "La partie est finie",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
                 if(i==JOptionPane.YES_OPTION)
                     DamierView.getInstance().getControl().initialisation(p.getJoueurBlanc().getNom(), p.getJoueurNoir().getNom());
                 else
                     DamierView.getInstance().getControl().finPartie();
             }
        }catch(Exception e)
        {
            
        }
        
    }
}
